package rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.dao;

import java.util.ArrayList;
import java.util.Collection;

import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.entitet.Putnik;
import rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.entitet.Vozac;
import rs.ac.uns.ftn.informatika.mbs2.e11031.etaksi.entitet.Voznja;

@Stateless
@Local(VoznjaDao.class)
public class VoznjaDaoBean extends GenerickiDaoBean<Voznja, Integer> implements
		VoznjaDao {

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Voznja> nezapoceteVoznje(Vozac vozac) {

		Collection<Voznja> voznje = new ArrayList<Voznja>();

		try {
			Query upit = em
					.createNamedQuery("nezapoceteVoznje")
					.setParameter("brojOsoba",
							vozac.getVozilo().getMestaZaSedenje())
					.setParameter("masaPrtljaga",
							vozac.getVozilo().getNosivostPrtljaznika())
					.setParameter("zapreminaPrtljaga",
							vozac.getVozilo().getZapreminaPrtljaznika());
			voznje.clear();
			voznje.addAll(upit.getResultList());
		} catch (NoResultException ex) {
			// TODO obraditi izuzetak
		}

		return voznje;
	}

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Voznja> zavrsenePutnikoveVoznje(Putnik putnik) {
		Collection<Voznja> voznje = new ArrayList<Voznja>();

		try {
			Query upit = em.createNamedQuery("zavrsenePutnikoveVoznje")
					.setParameter("putnikId", putnik.getId());
			voznje.clear();
			voznje.addAll(upit.getResultList());
		} catch (NoResultException ex) {
			// TODO obraditi izuzetak
		}

		return voznje;
	}

	@SuppressWarnings("unchecked")
	@Override
	public Collection<Voznja> zavrseneVozaceveVoznje(Vozac vozac) {
		Collection<Voznja> voznje = new ArrayList<Voznja>();

		try {
			Query upit = em.createNamedQuery("zavrseneVozaceveVoznje")
					.setParameter("vozacId", vozac.getId());
			voznje.clear();
			voznje.addAll(upit.getResultList());
		} catch (NoResultException ex) {
			// TODO obraditi izuzetak
		}

		return voznje;
	}

}
